import org.junit.Assert;
import org.junit.Test;

public class 测试复杂语句 {
    
    @Test
    public void 测试嵌套函数调用(){
        var 解释器 = 测试工具.解释并执行("""
                def Add(a,b) return a + b
                def Sub(a,b) return a - b
                def GetAll() return Sub(3, Add(1,2))
                print GetAll()
                """);
        Assert.assertEquals(解释器.打印输出缓存.toString(), "0");
    }
    
    
    @Test
    public void 测试递归函数调用(){
        var 解释器 = 测试工具.解释并执行("""
                def Fibonacci(n) :
                    if n < 3:
                        return 1
                    .
                    else:
                        return Fibonacci(n - 1) + Fibonacci(n - 2)
                    .
                .
                                
                print Fibonacci(10) # 1, 1, 2, 3, 5, 8, 13, 21, 34, 【55】
                """);
        Assert.assertEquals(解释器.打印输出缓存.toString(), "55");
    }
    
}
